#include "TraitementRequete.hpp"

#include "RapporteurDeFichier.hpp"

#include "InterpreteXml.hpp"

#include "StructureDonnees.hpp"

#include <iostream>

#include <QtCore/QIODevice>

#include <QtCore/QDebug>

using namespace std;

const QString TraitementRequete::BaseUrl( "http://www.croquemonster.com/api/" );

TraitementRequete::TraitementRequete( const QString& quoi, const QString& user,
				      const QString& mdp, QObject * parent )
  : QObject( parent ), TypeFichier( quoi ), Username( user ),
    MotDePasse( mdp ), Recup( new RapporteurDeFichier( this ) ),
    Lecteur( new InterpreteXml( quoi, this ) )
{
  QString url( BaseUrl + TypeFichier );
  url +=  ".xml?name=" + Username + ";pass=" + MotDePasse;
  
  Recup -> setUrl( url );
  
  connect( Recup, SIGNAL( fichierRecupere( QNetworkReply::NetworkError ) ),
	   this, SLOT( litTexte( QNetworkReply::NetworkError ) ) );
}

TraitementRequete::~TraitementRequete()
{}

void TraitementRequete::litTexte( const QNetworkReply::NetworkError& statut )
{
  if ( statut != QNetworkReply::NoError )
    {
      cerr << "Une erreur est survenue lors de la récupération du fichier : "
	   << statut << endl;
      return;
    }
  
  cout << "Fichier récupéré sans problème" << endl;
  
  QIODevice * infos = Recup -> reponseReseau();

  //StructureDonnees donnees;
  Donnees = new StructureDonnees();
  
  Lecteur -> setEntree( infos );
  
  if ( Lecteur -> lireEntree( *Donnees ) != 0 )
    {
      cerr << "Erreur dans la lecture du fichier XML" << endl;
      return;
    }
  else
    cout << "Lecture terminée avec succès" << endl;

  // Donnees -> afficheContenu();

  emit( envoieTexte( donnees() ) );
}

const StructureDonnees* TraitementRequete::donnees() const
{
  return Donnees;
}
